
package com.xbongbong.sys.domain.dao;

import com.xbongbong.sys.domain.entity.UserDepartmentEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * UserDepartmentDao
 *
 * @author GuoJun.HU
 * @since V1.0
 * @date 2019/2/19 11:08
 */
@Repository
@Mapper
public interface UserDepartmentDao {

    Integer insert(UserDepartmentEntity userDepartment);

    Integer update(UserDepartmentEntity userDepartment);

    Integer deleteByUserIdAndDepId(@Param("corpid") String corpid, @Param("userId") String userId, @Param("departmentId") Long departmentId);

    Integer deleteByDepIds(@Param("depIds") List<Long> depIds, @Param("corpid") String corpid);

    Integer deleteByUserId(@Param("userId") String userId, @Param("corpid") String corpid);

    UserDepartmentEntity getByKey(@Param("corpid") String corpid, @Param("userId") String userId, @Param("departmentId") Long departmentId);

    List<UserDepartmentEntity> findEntitys(@Param("param") Map<String, Object> param);

    Integer getEntitysCount(@Param("param") Map<String, Object> param);
    Integer getEntitysCountDistinct(@Param("param") Map<String, Object> param);

    /**
     * 删除某个公司的用户部门关系数据
     *
     * @param corpid
     *
     * @return
     */
    Integer deleteByCorpId(@Param("corpid") String corpid);

    /**
     * 删除指定公司更新时间小于某个时间点的员工部门关系数据，
     * 主要用途是在组织架构同步完成后将未更新到的员工部门关系表信息置为删除状态，
     * 代替原来的提前删除逻辑
     * @param corpid 公司ID
     * @param updateTime
     * @return 数据库操作返回，1表示成功，0表示失败
     * @author kaka
     * @date 2018年1月9日
     */
    Integer clearUnauthUserByUpdateTime(@Param("corpid") String corpid, @Param("updateTime") Integer updateTime);

    /**
     * 根据筛选条件获取符合条件的部门id列表
     * @param param 筛选条件
     * @return 符合条件的部门id列表
     */
    List<Long> getDepIds(@Param("param") Map<String, Object> param);
}